﻿
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Configuration;
using System.Data.SqlClient;
using System.Web.Configuration;
using SW_SoftBully.Models.ModuloAdministracion.Producto;
namespace TheBullysStore.Models.ModuloAdministracion.ReservaAreaComun
{
    public class ReservaAreaComunDAO
    {


        public List<AreaComun_reserva> cargarAreaComun(int idEdificio)
        {
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            List<AreaComun_reserva> listaAreaComun = new List<AreaComun_reserva>();
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            sqlCon.Open();
            try
            {

                string commandString = "select * from area_comun where id_edificio=" + idEdificio + " and  estado =1  and es_reservable=1";



                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    AreaComun_reserva area = new AreaComun_reserva();
                    area.idAreaComun = (int)dataReader["id_area_comun"];
                    area.nombreAreaComun = (string)dataReader["nombre_area"];


                    listaAreaComun.Add(area);
                }
                dataReader.Close();
                sqlCon.Close();

                return listaAreaComun;
            }
            catch (Exception ex)
            {
                sqlCon.Close();
                return null;

            }







        }

       
      //  List<DiaReserva> listaDiaReserva = reservaDao.verListaReserva(idAreaComun, fecha);


        public List<string> verDisponibilidad(int idAreaComun){


            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            List<string> lista = new List<string>();
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            sqlCon.Open();
            try
            {

                string commandString = "select * from horario_disponible where id_area_comun="+ idAreaComun;



                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    lista.Add((string)dataReader["lunes"]);
                    lista.Add((string)dataReader["martes"]);
                    lista.Add((string)dataReader["miercoles"]);
                    lista.Add((string)dataReader["jueves"]);
                    lista.Add((string)dataReader["viernes"]);
                    lista.Add((string)dataReader["sabado"]);
                    lista.Add((string)dataReader["domingo"]);
                 
                }
                dataReader.Close();
                sqlCon.Close();

                return lista;
            }
            catch (Exception ex)
            {
                sqlCon.Close();
                return null;

            }





        }


        public string eliminarReserva(int reservaBean)
        {
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            List<AreaComun_reserva> listaAreaComun = new List<AreaComun_reserva>();
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            sqlCon.Open();
            try
            {

                string commandString = "update reserva_servicio_area_comun set estado=0 where id_reserva=" + reservaBean;



                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                sqlCmd.ExecuteNonQuery();



                return "Se elimino correctamente la reserva";
            }
            catch (Exception ex)
            {
                sqlCon.Close();
                return "No se elimino correctamente la reserva ";

            }

   
        }
         public string insertarReserva(ReservaAreaComunBean reservaBean)
        {
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            List<AreaComun_reserva> listaAreaComun = new List<AreaComun_reserva>();
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            sqlCon.Open();
            try
            {

                string commandString = "select id_departamento from persona where id_persona=" + reservaBean.idUsuario;



                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
              reservaBean.idEdificio=(int)  sqlCmd.ExecuteScalar();




                 commandString = "insert into reserva_servicio_area_comun values (0,1," + reservaBean.idAreaComun + ",'" + reservaBean.fecha + "','" + reservaBean.horaInicio + "','" + reservaBean.horaFin + "'," + reservaBean.idUsuario + "," + reservaBean.idEdificio+ ")";



                 sqlCmd = new SqlCommand(commandString, sqlCon);
                sqlCmd.ExecuteNonQuery();



                return "Se registro correctamente la reserva";
            }
            catch (Exception ex)
            {
                sqlCon.Close();
                return "No se registro correctamente la reserva ";

            }

   
        }



        public List<DiaReserva> verListaReserva(int idAreaComun, string[] fechas)
        {


            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            List<DiaReserva> listaDiaReserva = new List<DiaReserva>();
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);

            SqlCommand sqlCmd;
            SqlDataReader dataReader;

            try
            {


                sqlCon.Open();
                DiaReserva dia;
                Reserva reserva;


                for (int i = 0; i < 7; i++)
                {
                    dia = new DiaReserva();
                    string commandString = "select hora_inicio,hora_fin from reserva_servicio_area_comun where   Estado=1 and id_area_comun=" + idAreaComun + " and   fecha='" + fechas[i] + "'";



                    sqlCmd = new SqlCommand(commandString, sqlCon);
                    dataReader = sqlCmd.ExecuteReader();
                    dia.listaReserva = new List<Reserva>();
                    while (dataReader.Read())
                    {
                        reserva = new Reserva();
                        reserva.hI = (string)dataReader["hora_inicio"];
                        reserva.hF = (string)dataReader["hora_fin"];

                        dia.listaReserva.Add(reserva);

                    }
                    listaDiaReserva.Add(dia);
                    dataReader.Close();

                }
                sqlCon.Close();

                return listaDiaReserva;
            }
            catch (Exception ex)
            {
                sqlCon.Close();
                return null;

            }





        }
        public List<DiaReserva> verListaReservaPersonal(int idAreaComun, string[] fechas,int idDepartamento )
        {


            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            List<DiaReserva> listaDiaReserva = new List<DiaReserva>();
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);

            SqlCommand sqlCmd;
            SqlDataReader dataReader;

            try
            {


                sqlCon.Open();
                DiaReserva dia;
                Reserva reserva;


                for (int i = 0; i < 7; i++)
                {
                    dia = new DiaReserva();
                    string commandString = "select hora_inicio,hora_fin from reserva_servicio_area_comun where   Estado=1 and id_area_comun=" + idAreaComun + " and   fecha='" + fechas[i] + "'";



                    sqlCmd = new SqlCommand(commandString, sqlCon);
                    dataReader = sqlCmd.ExecuteReader();
                    dia.listaReserva = new List<Reserva>();
                    while (dataReader.Read())
                    {
                        reserva = new Reserva();
                        reserva.hI = (string)dataReader["hora_inicio"];
                        reserva.hF = (string)dataReader["hora_fin"];

                        dia.listaReserva.Add(reserva);

                    }
                    listaDiaReserva.Add(dia);
                    dataReader.Close();

                }
                sqlCon.Close();

                return listaDiaReserva;
            }
            catch (Exception ex)
            {
                sqlCon.Close();
                return null;

            }





        }

        //public string mantenerSolicitudProducto(SolicitudProductoBean solicitudproducto)
        //{

        //    //******************************************************************
        //    int edificio = 2;
        //    solicitudproducto.id_edificio = edificio;
        //    //******************************************************************

        //    string mensaje = "";
        //    String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
        //    string commandString = "";
        //    SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
        //    SqlCommand sqlCmd;
        //    sqlCon.Open();
        //    int idSolicitud=0;
        //    try
        //    {

        //        if (solicitudproducto.accion == 0)
        //        {
        //            commandString = "update  solicitud_insumo set estado=0 where id_solicitud_insumo=" + solicitudproducto.idSolicitudProducto;
        //            mensaje = "Se elimino la solicitud correctamente";

        //        }
        //        if (solicitudproducto.accion == 1)
        //        {
        //            //  aqui hay que poner la fecha commandString = "insert into solicitud_insumo values(1,1," + solicitudproducto.id_edificio + ",'" + solicitudproducto.comentario + "')";
        //            commandString = "insert into solicitud_insumo values(1,1," + solicitudproducto.id_edificio + ",'" + solicitudproducto.comentario + "','"+solicitudproducto.fecha+"')";
        //            mensaje = "Se inserto la solicitud correctamente";
        //            sqlCmd = new SqlCommand(commandString, sqlCon);
        //        sqlCmd.ExecuteNonQuery();
                   
        //            commandString = "select max(id_solicitud_insumo) from solicitud_insumo ";

        //              sqlCmd = new SqlCommand(commandString, sqlCon);
        //             if (!Convert.IsDBNull(sqlCmd.ExecuteScalar()))
        //            {
        //                idSolicitud = (int)sqlCmd.ExecuteScalar();
        //            }
        //            else
        //            {

        //                idSolicitud = 1;
        //            }
        //        }
        //        if (solicitudproducto.accion == 2)
        //        {
        //            commandString = "update solicitud_insumo set comentario='" + solicitudproducto.comentario + "',fecha='" + solicitudproducto.fecha + "' where id_solicitud_insumo="+solicitudproducto.idSolicitudProducto ;
        //            mensaje = "Se modifico la solicitud correctamente";
        //        }
           
        //        if (solicitudproducto.accion == 1)
        //        {

                  

        //            String[] aux;
        //            aux = solicitudproducto.lineaSol.Split('|');
        //            for (int i = 0; i < (aux.Count()); i=i+4)
        //            {

        //                commandString = "insert into solicitud_x_producto values(" + aux[i + 2] + ",'" + aux[i + 1] + "'," + aux[i + 0] + "," + idSolicitud + ",'" + aux[i + 3] + "')";
        //                    sqlCmd = new SqlCommand(commandString, sqlCon);
        //                    sqlCmd.ExecuteNonQuery();
                        
        //            }

        //        }else{
        //                 sqlCmd = new SqlCommand(commandString, sqlCon);
        //        sqlCmd.ExecuteNonQuery();
        //        }



        //        sqlCon.Close();
        //    }

        //    catch (Exception ex)
        //    {

        //        if (solicitudproducto.accion == 0)
        //        {
        //            mensaje = "No se pudo eliminar la solicitud correctamente";

        //        }
        //        if (solicitudproducto.accion == 1)
        //        {
        //            mensaje = "No se pudo insertar la solicitud correctamente";
        //        }
        //        if (solicitudproducto.accion == 2)
        //        {
        //            mensaje = "No se pudo modificar la solicitud correctamente";
        //        }
        //        sqlCon.Close();
        //        //  horario.conexion = "Falla en Conexion";
        //        return mensaje;
        //    }
        //    return mensaje;
        //}

        public List<CabeceraReserva> verDisponibilidadBuscar(FiltroSolicitudProdcuto filtroo)
        {
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            List<CabeceraReserva> lista = new List<CabeceraReserva>();
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            sqlCon.Open();
            try
            {

                string commandString = "select a.nombre_area,r.id_area_comun,r.fecha,r.id_reserva,r.hora_fin,r.hora_inicio,d.numero 'departamento' from reserva_servicio_area_comun r, area_comun a,departamento d, persona pe where  d.id_departamento=r.id_departamento and pe.id_persona=r.id_persona and  r.id_area_comun=a.id_area_comun  and r.estado=1  ";
                 string filtro = "";



                 if (!(filtroo.idAreaComun == null || filtroo.idAreaComun.Trim().Equals("")))
                 {
                     filtro = filtro + " and  r.id_area_comun = " + filtroo.idAreaComun + "  ";
                 }


                 if(! ((filtroo.idPersona == -1)))
                 {
                     filtro = filtro + " and  r.id_persona = " + filtroo.idPersona + "  ";
                 }


                if (!(filtroo.fechaInicio == null || filtroo.fechaInicio.Equals(Convert.ToDateTime("01/01/0001 12:00:00 AM"))))
                {
                    filtro = filtro + " and  r.fecha >= '" + filtroo.fechaInicio + "'  ";
                }


                if (!(filtroo.fechaFin == null || filtroo.fechaFin.Equals(Convert.ToDateTime("01/01/0001 12:00:00 AM"))))
                {
                    filtro = filtro + " and  r.fecha <= '" + filtroo.fechaFin + "'  ";
                }

                commandString += filtro + " order by r.fecha desc,a.nombre_area desc, r.hora_inicio desc , r.hora_fin desc";







                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();
                DateTime a;
                while (dataReader.Read())
                {
                    CabeceraReserva prod = new CabeceraReserva();
                    //cliente. = (int)dataReader["idUsuario"];
                    prod.idReserva = (int)dataReader["id_reserva"];
                    prod.areaComun = (string)dataReader["nombre_area"];
                    a = (DateTime)dataReader["fecha"];
                    
                    prod.fecha = a.ToShortDateString();
                    prod.horaReserva = (string)dataReader["hora_inicio"];
                    prod.horaReserva = prod.horaReserva.Trim() + "-" + ((string)dataReader["hora_fin"]).Trim();
                    prod.departamento = (int)dataReader["departamento"];
                    //prod.persona = idSol;
                    lista.Add(prod);
                }
                dataReader.Close();
                sqlCon.Close();

                return lista;
            }
            catch (Exception ex)
            {
                sqlCon.Close();
                return null;

            }



        }


        //public List<SolicitudProductoBean> buscarSolicitudProducto(FiltroSolicitudProdcuto filtro)
        //{
        //    String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
        //    List<SolicitudProductoBean> listaSolicitudProducto = new List<SolicitudProductoBean>();
        //    SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
        //    sqlCon.Open();
        //    try
        //    {

        //        string commandString = "select * from solicitud_insumo where estado =1 ";




        //        string auxFiltro = "";
        //        //  where p.Nombres like '%asd%' and p.Apellidos like '%asd%' and c.Id_Cargo =2 and p.Nro_Documento_persona like '%1%'"



        //        if (!(filtro.fechaFinal == null || filtro.fechaFinal.Trim().Equals("")))
        //        {
        //            auxFiltro = auxFiltro + " and  fecha<= '" + filtro.fechaFinal + "'  ";
        //        }



        //        if (!(filtro.fechaInicial == null || filtro.fechaInicial.Trim().Equals("")))
        //        {
        //            auxFiltro = auxFiltro + " and  fecha >= '" + filtro.fechaInicial + "'  ";
        //        }




        //        commandString = commandString + auxFiltro;

        //        //borrar esto
        //        //commandString = "select * from solicitud_insumo where estado =1 ";
        //        SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
        //        SqlDataReader dataReader = sqlCmd.ExecuteReader();
        //        DateTime a;
        //        while (dataReader.Read())
        //        {
        //            SolicitudProductoBean prod = new SolicitudProductoBean();
        //            //cliente. = (int)dataReader["idUsuario"];
        //            prod.comentario = (string)dataReader["comentario"];
        //            prod.idSolicitudProducto = (int)dataReader["id_solicitud_insumo"];
        //            // prod.fecha = (DateTime)dataReader["fecha"];
        //            a = (DateTime)dataReader["fecha"];
        //                                prod.fecha = a.ToShortDateString();

        //            listaSolicitudProducto.Add(prod);
        //        }
        //        dataReader.Close();
        //        sqlCon.Close();

        //        return listaSolicitudProducto;
        //    }
        //    catch (Exception ex)
        //    {
        //        sqlCon.Close();
        //        return null;

        //    }



        //}

       

    }


}